const axios = require('axios');

const BASE_URL = 'http://localhost:4000';
let authToken = '';

// 测试用户登录
async function testLogin() {
  try {
    console.log('🔐 测试用户登录...');
    const response = await axios.post(`${BASE_URL}/api/auth/login`, {
      username: 'chengzzh',
      password: '123456'
    });
    
    if (response.data.code === 200) {
      authToken = response.data.data.token;
      console.log('✅ 登录成功，获取到token');
      return true;
    } else {
      console.log('❌ 登录失败:', response.data.message);
      return false;
    }
  } catch (error) {
    console.log('❌ 登录请求失败:', error.message);
    return false;
  }
}

// 测试心跳检测接口
async function testHeartbeat() {
  try {
    console.log('\n💓 测试心跳检测接口...');
    const response = await axios.post(`${BASE_URL}/api/auth/heartbeat`, {}, {
      headers: {
        'Authorization': `Bearer ${authToken}`
      }
    });
    
    if (response.data.code === 200) {
      console.log('✅ 心跳检测成功');
      console.log('   响应数据:', response.data.data);
    } else {
      console.log('❌ 心跳检测失败:', response.data.message);
    }
  } catch (error) {
    console.log('❌ 心跳检测请求失败:', error.message);
    if (error.response) {
      console.log('   错误详情:', error.response.data);
    }
  }
}

// 测试清理接口
async function testCleanup() {
  try {
    console.log('\n🧹 测试清理接口...');
    const response = await axios.post(`${BASE_URL}/api/auth/cleanup`, {}, {
      headers: {
        'Authorization': `Bearer ${authToken}`
      }
    });
    
    if (response.data.code === 200) {
      console.log('✅ 清理成功');
      console.log('   响应数据:', response.data.data);
    } else {
      console.log('❌ 清理失败:', response.data.message);
    }
  } catch (error) {
    console.log('❌ 清理请求失败:', error.message);
    if (error.response) {
      console.log('   错误详情:', error.response.data);
    }
  }
}

// 测试无效token
async function testInvalidToken() {
  try {
    console.log('\n🚫 测试无效token...');
    const response = await axios.post(`${BASE_URL}/api/auth/heartbeat`, {}, {
      headers: {
        'Authorization': 'Bearer invalid_token_here'
      }
    });
    
    console.log('❌ 应该返回错误，但收到了成功响应');
  } catch (error) {
    if (error.response && error.response.status === 401) {
      console.log('✅ 无效token正确返回401错误');
    } else {
      console.log('❌ 无效token处理异常:', error.message);
    }
  }
}

// 主测试函数
async function runTests() {
  console.log('🚀 开始测试心跳检测和清理接口\n');
  
  // 先登录获取token
  const loginSuccess = await testLogin();
  if (!loginSuccess) {
    console.log('\n❌ 无法继续测试，登录失败');
    return;
  }
  
  // 测试心跳检测
  await testHeartbeat();
  
  // 测试清理接口
  await testCleanup();
  
  // 再次测试心跳检测（验证token仍然有效）
  await testHeartbeat();
  
  // 测试无效token
  await testInvalidToken();
  
  console.log('\n🎉 所有测试完成！');
}

// 运行测试
runTests().catch(console.error);
